package com.cloud.common.utils;

import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.BaseRowModel;
import com.alibaba.excel.metadata.Sheet;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;

/**
 * @author zhaoyang
 * @version 1.0.0
 * @create 2020年11月02日 16:00
 * @since JDK 1.8
 */
public class EasyExcelUtil {

    /**
     * 导出Excel
     *
     * @param baseRowModel 导出数据类型
     * @param list 待导出数据
     * @param filePath 存储路径
     *
     */
    public static void pushToExcel(Class<? extends BaseRowModel> baseRowModel, List<? extends BaseRowModel> list,String filePath) throws Exception{
        // 文件输出位置
        OutputStream out = new FileOutputStream(filePath);

        ExcelWriter writer = EasyExcelFactory.getWriter(out);

        // 写仅有一个 Sheet 的 Excel 文件, 此场景较为通用
        Sheet sheet1 = new Sheet(1, 0, baseRowModel);

        // 第一个 sheet 名称
        sheet1.setSheetName("sheet");

        // 写数据到 Writer 上下文中
        // 入参1: 创建要写入的模型数据
        // 入参2: 要写入的目标 sheet
        writer.write(list, sheet1);

        // 将上下文中的最终 outputStream 写入到指定文件中
        writer.finish();

        // 关闭流
        out.close();

    }



}
